]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
VolumeStatus: play notification on scroll
authorGiovanni Campagna <gcampagna@src.gnome.org>
Tue, 15 Feb 2011 18:23:36 +0000 (19:23 +0100)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 17 Feb 2011 14:35:17 +0000 (15:35 +0100)
Add the machinery to cancel the notification when a new playing a
new one (wrapping ca_context_cancel), then use it when scrolling
the status icon.
Not doing it for the slider because it causes noise, either with the
keyboard, with mouse drag or with mouse wheel.

https://bugzilla.gnome.org/show_bug.cgi?id=633667

js/ui/status/volume.js
src/shell-global.c
src/shell-global.h

index f347607488685cf03942568b0b244d15b1f1b048..7538fa3e9a13b53609cc7f208beb861201430f06 100644 (file)
@@ -19,6 +19,8 @@ const _ = Gettext.gettext;
 const VOLUME_MAX = 65536.0; /* PA_VOLUME_NORM */
 const VOLUME_ADJUSTMENT_STEP = 0.05; /* Volume adjustment step in % */
 
+const VOLUME_NOTIFY_ID = 1;
+
 function Indicator() {
     this._init.apply(this, arguments);
 }
@@ -87,6 +89,8 @@ Indicator.prototype = {
             this._output.change_is_muted(false);
             this._output.push_volume();
         }
+
+        this._notifyVolumeChange();
     },
 
     _onControlReady: function() {
@@ -193,7 +197,8 @@ Indicator.prototype = {
     },
 
     _notifyVolumeChange: function() {
-        global.play_theme_sound('audio-volume-change');
+        global.cancel_theme_sound(VOLUME_NOTIFY_ID);
+        global.play_theme_sound(VOLUME_NOTIFY_ID, 'audio-volume-change');
     },
 
     _mutedChanged: function(object, param_spec, property) {
index de17526ed1cb0e5479e1d61fce64be84db14c71a..14347acd4cfa5dee1da76651f352a6aca78b6a94 100644 (file)
@@ -1889,6 +1889,7 @@ shell_global_run_at_leisure (ShellGlobal         *global,
 /**
  * shell_global_play_theme_sound:
  * @global: the #ShellGlobal
+ * @id: an id, used to cancel later (0 if not needed)
  * @name: the sound name
  *
  * Plays a simple sound picked according to Freedesktop sound theme.
@@ -1896,9 +1897,24 @@ shell_global_run_at_leisure (ShellGlobal         *global,
  */
 void
 shell_global_play_theme_sound (ShellGlobal *global,
+                               guint        id,
                                const char  *name)
 {
-  ca_context_play (global->sound_context, 0, CA_PROP_EVENT_ID, name, NULL);
+  ca_context_play (global->sound_context, id, CA_PROP_EVENT_ID, name, NULL);
+}
+
+/**
+ * shell_global_cancel_theme_sound:
+ * @global: the #ShellGlobal
+ * @id: the id previously passed to shell_global_play_theme_sound()
+ *
+ * Cancels a sound notification.
+ */
+void
+shell_global_cancel_theme_sound (ShellGlobal *global,
+                                 guint id)
+{
+  ca_context_cancel (global->sound_context, id);
 }
 
 /*
index 5d1e13de4c2b23173bcc39783519dcda1b142779..1f8eddf269b1b58ae82dbf917edb3ebc2300f0fb 100644 (file)
@@ -140,7 +140,10 @@ void shell_global_run_at_leisure (ShellGlobal         *global,
                                   GDestroyNotify       notify);
 
 void shell_global_play_theme_sound (ShellGlobal       *global,
+                                    guint              id,
                                     const char        *name);
+void shell_global_cancel_theme_sound (ShellGlobal     *global,
+                                      guint            id);
 
 void shell_global_init_xdnd (ShellGlobal *global);